﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SGC.BE;
using SGC.BL.SolicitudCambio;
using SGC.BL.Proceso;
using SGC.BL.OportunidadMejora;
using System.Text;

namespace SGC.Web.ModuloCalidad.Mantenimientos
{
    public partial class ActualizarSolicitudCambio : System.Web.UI.Page
    {
        
        #region Metodos de Usuario
        private void Limpiar()
        {
            txtCodigo.Text = "";
            txtFechaAprobacion.Text = "";
            txtFechaSolicitud.Text = DateTime.Now.ToString("dd/MM/yyyy");
            txtObservaciones.Text = "";
            txtSolicitante.Text = "";
            txtSolicitanteDesc.Text = "";
        }

        private BE_SolicitudCambio ObtenerEntidad()
        {
            BE_SolicitudCambio entidad = new BE_SolicitudCambio();

            if ((string)Session["registro"] == "M")
            {
                entidad.CODIGO_SOLICITUD_CAMBIO = txtCodigo.Text;                
            }
            else
            {
                entidad.CODIGO_SOLICITUD_CAMBIO = null;
            }

            entidad.FECHA_CREACION = (DateTime.Parse(txtFechaSolicitud.Text).ToString("yyyy-MM-dd"));
            entidad.SOLICITANTE = txtSolicitante.Text;
            entidad.SOLICITANTE_DESC = txtSolicitanteDesc.Text;
            entidad.PROCESO = new BE_Proceso() { CODIGO_PROCESO = cmbProceso.SelectedValue };
            entidad.OPORTUNIDAD_MEJORA= new BE_OportunidadMejora() { CODIGO_OPORTUNIDAD_MEJORA = cmbOportunidadMejora.SelectedValue };
            entidad.PRIORIDAD = cmbPrioridad.SelectedValue;
            entidad.IMPACTO = cmbImpacto.SelectedValue;
            entidad.ESTADO = cmbEstado.SelectedValue;
            entidad.OBSERVACIONES = txtObservaciones.Text;
            if (txtFechaAprobacion.Text == string.Empty)
            {
                entidad.FECHA_APROBACION = null;
            }
            else
            {
                entidad.FECHA_APROBACION = (DateTime.Parse(txtFechaAprobacion.Text)).ToString("yyyy-MM-dd");
            }
            return entidad;
        }
        private void SetEntidad(BE_SolicitudCambio entidad)
        {
            if ((string)Session["registro"] == "M")
            {
                txtCodigo.Text = entidad.CODIGO_SOLICITUD_CAMBIO;
            }
            else
            {
                txtCodigo.Text = string.Empty;
            }

            txtFechaSolicitud.Text =  DateTime.Parse(entidad.FECHA_CREACION).ToString("dd/MM/yyyy");
            txtSolicitante.Text = entidad.SOLICITANTE;
            txtSolicitanteDesc.Text = entidad.SOLICITANTE_DESC;
            cmbProceso.SelectedValue = entidad.PROCESO.CODIGO_PROCESO;
            cmbOportunidadMejora.SelectedValue = entidad.OPORTUNIDAD_MEJORA.CODIGO_OPORTUNIDAD_MEJORA;
            cmbPrioridad.SelectedValue = entidad.PRIORIDAD;
            cmbImpacto.SelectedValue = entidad.IMPACTO;
            cmbEstado.SelectedValue = entidad.ESTADO;
            txtObservaciones.Text = entidad.OBSERVACIONES;
            if (entidad.FECHA_APROBACION!=null)
            {
                txtFechaAprobacion.Text = (DateTime.Parse(entidad.FECHA_APROBACION)).ToString("dd/MM/yyyy");
            }
            else
            {
                txtFechaAprobacion.Text = string.Empty;
            }
           
            
        }
        private void CargaCombos()
        {
            BL_Proceso proceso = new BL_Proceso();
            IList<BE_Proceso> listaProcesos =  proceso.Listar(null, null);
            cmbProceso.DataValueField = "CODIGO_PROCESO";
            cmbProceso.DataTextField = "NOMBRE";
            cmbProceso.DataSource = listaProcesos;
            cmbProceso.DataBind();

            BL_OportunidadMejora oportunidad = new BL_OportunidadMejora();
            IList<BE_OportunidadMejora> listaOportunidad = oportunidad.Listar(null, null);
            cmbOportunidadMejora.DataValueField = "CODIGO_OPORTUNIDAD_MEJORA";
            cmbOportunidadMejora.DataTextField = "CODIGO_OPORTUNIDAD_MEJORA";
            cmbOportunidadMejora.DataSource = listaOportunidad;
            cmbOportunidadMejora.DataBind();

        }   
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["codigo"] = Request.QueryString["Codigo"];
                Session["registro"] = Request.QueryString["Registrar"];

                CargaCombos();
                
                BL_SolicitudCambio negocio = new BL_SolicitudCambio();
                BE_SolicitudCambio entidad;

                if ((string)Session["codigo"] == "0000000000")
                {
                    //Registrar
                    txtFechaSolicitud.Text = DateTime.Now.ToString("dd/MM/yyyy");
                }
                else
                {
                    //Modificar
                    entidad = negocio.ListarporId((string)Session["codigo"]);
                    SetEntidad(entidad);
                }
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            BL_SolicitudCambio data = new BL_SolicitudCambio();
            BE_SolicitudCambio entidad = ObtenerEntidad();
            if ((string)Session["registro"] =="M")
            {
                int resultado = data.Modificar(entidad);
                if (resultado==0)
                {
                    //Bien
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Solicitud Cambio", "jsModificarSC();", true);                    
                    
                }
                else
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Solicitud Cambio", "jsErrorModificarSC();", true);
                }
            }
            else
            {                
                int resultado = data.Registrar(entidad);
                if (resultado == 0)
                {
                    //Bien
                    Limpiar();
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Solicitud Cambio", "jsRegistroSC();", true);                    
                    
                }
                else
                {
                    //Mal
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Solicitud Cambio", "jsErrorRegistroSC();", true);
                }
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.Append("~/ModuloCalidad/Mantenimientos/Solicitud_Cambio/ConsultarSolicitudCambio.aspx");
            Response.Redirect(strBuilder.ToString());
        }
    }
}